﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DAL;

namespace BLL.NguoiDung
{
    public class TuyenDung
    {
        public static List<TomTatTuyenDung> ViecDaUngTuyen(int userId)
        {
            var objReturn = new List<TomTatTuyenDung>();
            var db = Connect.GetDataContext<TimViecDataContext>("Strconnect");

            var lst = db.tbl_TD_NopTuyenDungs.Where(r => r.tbl_HS_HoSo.UserId == userId).ToList();

            foreach (var tblTdNopTuyenDung in lst)
            {
                var tem = new TomTatTuyenDung
                              {
                                  TuyenDungId = tblTdNopTuyenDung.TuyenDungId,
                                  URL = tblTdNopTuyenDung.tbl_TD_TuyenDung.URL,
                                  TenCongTy = tblTdNopTuyenDung.tbl_TD_TuyenDung.TenCongTy,
                                  NgayNop = tblTdNopTuyenDung.NgayGui.Value,
                                  ChucDanh = tblTdNopTuyenDung.tbl_TD_TuyenDung.ChucDanh,

                              };
                var par = tblTdNopTuyenDung.tbl_TD_TuyenDung.NoiLamViec.Split(';');


                var str = "";
                foreach (var s in par)
                {
                    if (s != "")
                        str = BLL.Admin.TinhHelper.Get_TinhId(Int32.Parse(s)).Ten + " ";
                }

                tem.NoiLamViec += str;

                objReturn.Add(tem);
            }

            return objReturn;

        }


        public static List<TomTatTuyenDung> SearchTuyenDung(int nganhNgheId,int noiLamViec,int loaiHinhCv,string tuKhoa)
        {
            var objReturn = new List<TomTatTuyenDung>();
            var db = Connect.GetDataContext<TimViecDataContext>("Strconnect");
            bool allNganhNghe = nganhNgheId == -1;
            bool allNoiLamViec = noiLamViec == -1;
            bool allLoaiHinh = loaiHinhCv == -1;
            bool allTuKhoa = tuKhoa == "";

            var lst =
                db.tbl_TD_TuyenDungs.Where(
                    r =>
                    ((r.NganhNgheId1 == nganhNgheId || r.NganhNgheId2 == nganhNgheId || r.NgheNgheId3 == nganhNgheId ||
                      allNganhNghe) && (r.NoiLamViec.Contains(noiLamViec.ToString()) || allNoiLamViec) &&
                     (r.LoaiCongViecId == loaiHinhCv || allLoaiHinh) && (r.ChucDanh.Contains(tuKhoa) || allTuKhoa)) &&
                    r.TinhTrang == 1 && r.NgayHetHan > DateTime.Now).ToList();

            foreach (var tblTdTuyenDung in lst)
            {
                if (tblTdTuyenDung.NgayDang != null)
                {
                    var tem = new TomTatTuyenDung
                                  {
                                      TuyenDungId = tblTdTuyenDung.TuyenDungId,
                                      URL = tblTdTuyenDung.URL,
                                      TenCongTy = tblTdTuyenDung.TenCongTy,
                                      NgayDang = tblTdTuyenDung.NgayDang.Value,
                                      ChucDanh = tblTdTuyenDung.ChucDanh
                                  };
                    
                    var par = tblTdTuyenDung.NoiLamViec.Split(';');


                    var str = "";
                    foreach (var s in par)
                    {
                        if (s != "")
                            str = BLL.Admin.TinhHelper.Get_TinhId(Int32.Parse(s)).Ten + " ";
                    }

                    tem.NoiLamViec += str;

                    objReturn.Add(tem);
                }
            }

            return objReturn;
        }

        public static List<TomTatTuyenDung> GoiYViecLam()
        {
            var objReturn = new List<TomTatTuyenDung>();
            var db = Connect.GetDataContext<TimViecDataContext>("Strconnect");
            var lst = db.tbl_TD_TuyenDungs.Where(r => r.NgayHetHan > DateTime.Now && r.TinhTrang==1).ToList();
            if (lst.Count > 0)
            {
                var total = lst.Count > 100 ? 100 : lst.Count;
                for (int i = 0; i < total; i++)
                {
                    var index = (new Random()).Next(0, lst.Count);
                    var item = lst[index];
                    lst.RemoveAt(index);

                    objReturn.Add(new TomTatTuyenDung
                                      {
                                          TuyenDungId = item.TuyenDungId,
                                          URL = item.URL,
                                          TenCongTy = item.TenCongTy,
                                          ChucDanh = item.ChucDanh
                                      });
                }
            }
            return objReturn;
        }


        public static List<NganhNgheView> LoadNhomTuyenDung()
        {
            var objReturn = new List<NganhNgheView>();
            var db = Connect.GetDataContext<TimViecDataContext>("Strconnect");
            var lstNganhNghe = db.tbl_DM_NganhNghes.Where(r => r.ValueConfig == 0);
            foreach (var tblDmNganhNghe in lstNganhNghe)
            {
                var tem = new NganhNgheView
                              {
                                  TenNganhNghe = tblDmNganhNghe.Ten,
                                  NganhNgheId = tblDmNganhNghe.NganhNgheId,
                                  Total =
                                      db.tbl_TD_TuyenDungs.Count(
                                          r =>
                                          r.TinhTrang == 1 &&
                                          (r.NganhNgheId1 == tblDmNganhNghe.NganhNgheId ||
                                           r.NganhNgheId2 == tblDmNganhNghe.NganhNgheId ||
                                           r.NgheNgheId3 == tblDmNganhNghe.NganhNgheId))
                              };
                objReturn.Add(tem);
            }

            return objReturn;
        }
    }
    public class NganhNgheView
    {
        public string TenNganhNghe { set; get; }
        public int NganhNgheId { set; get; }
        public int Total { set; get; }
    }

    public class TomTatTuyenDung
    {
        public int TuyenDungId { set; get; }
        public string URL { set; get; }
        public string ChucDanh { set; get; }
        public string TenCongTy { set; get; }
        public string NoiLamViec { set; get; }
        public DateTime NgayDang { set; get; }
        public DateTime NgayNop { set; get; }
    }
}